<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>构造函数</title>
    <script>

        //  定义一个类Person
        class Person{
            name='孙悟空'   // 当我们在类中直接指定实例属性的指时，意味着我们创建所有的对象的属性都是这个值
            age=18
            gender='男'
            sayhello(){
                console.log(this.name)
            }
            fn1=()=>{
                console.log('箭头函数',this.name)
            }
        }

        //创建Person的实例
        const p1=new Person('孙悟空',18,'男')       //这么写是没用的
        const p2=new Person('猪八戒',20,'男')
        const p3=new Person('沙和尚',30,'男')
        const p4=new Person('女儿国国王',18,'女')
        console.log(p1)
        console.log(p2)
        console.log(p3)
        console.log(p4)


        // ===========================================================
        class Person1{
            static name ='静态属性'
            //在类中，我们可以添加一个特殊的方法constructor()，该方法称为构造函数（构造方法）

            // 构造函数会在我们调用类创建对象时执行，换句话说，调用new关键字创建对象的时候，就是在调构造函数。
            //  构造函数中this就是当前创建的对象
            constructor(name,age,gender,way){
                this.name=name
                this.age=age
                this.gener=gender
                this.f=way
            }
        }

        fn1=()=>{
                console.log('箭头函数',this)
            }


            
        const p_1= new Person1('孙悟空',18,'男',fn1)
        p_1.f()
        const p_2= new Person1('猪八戒',20,'男')
        const p_3= new Person1('沙和尚',30,'男')
        const p_4= new Person1('女儿国国王',18,'女')
        const p_5= new Person1('唐僧',19,'男')


        console.log(p_1);
        console.log(p_2);
        console.log(p_3);
        console.log(p_4);
        console.log(p_5);




    </script>

</head>
<body>
    
</body>
</html>